🎖️GitЯра🎖️
Node / meshtastic / Meshtastic-Android / files / androidApp / src / fdroid / kotlin / org / meshtastic / app / map / MapViewExtensions.kt
Displaying Raw • Download
androidApp/src/fdroid/kotlin/org/meshtastic/app/map/MapViewExtensions.kt bd2863243bab6eb213401d949839a2bc74dde7e2 (bd286324) Text, 5.87 KB
T8b949e/*
* Copyright (c) 2026 Meshtastic LLC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
Tff7b72package T7ee787org.meshtastic.app.map
Tff7b72import T7ee787android.graphics.Color
Tff7b72import T7ee787android.graphics.DashPathEffect
Tff7b72import T7ee787android.graphics.Paint
Tff7b72import T7ee787android.graphics.Typeface
Tff7b72import T7ee787androidx.compose.ui.unit.Density
Tff7b72import T7ee787androidx.compose.ui.unit.dp
Tff7b72import T7ee787androidx.compose.ui.unit.sp
Tff7b72import T7ee787androidx.core.content.ContextCompat
Tff7b72import T7ee787org.meshtastic.app.R
Tff7b72import T7ee787org.meshtastic.core.model.util.GeoConstants.DEG_D
Tff7b72import T7ee787org.meshtastic.core.model.util.GeoConstants.HEADING_DEG
Tff7b72import T7ee787org.meshtastic.proto.Position
Tff7b72import T7ee787org.osmdroid.util.GeoPoint
Tff7b72import T7ee787org.osmdroid.views.MapView
Tff7b72import T7ee787org.osmdroid.views.overlay.CopyrightOverlay
Tff7b72import T7ee787org.osmdroid.views.overlay.Marker
Tff7b72import T7ee787org.osmdroid.views.overlay.Polyline
Tff7b72import T7ee787org.osmdroid.views.overlay.ScaleBarOverlay
Tff7b72import T7ee787org.osmdroid.views.overlay.advancedpolyline.MonochromaticPaintList
Tff7b72import T7ee787org.osmdroid.views.overlay.gridlines.LatLonGridlineOverlay2
Tff7b72private Tff7b72const Tff7b72val Te6edf3GRID_LABEL_TEXT_SIZE_PX Tff7b72= T79c0ff4T79c0ff0f
Tff7b72private Tff7b72const Tff7b72val Te6edf3GRID_LINE_WIDTH_PX Tff7b72= T79c0ff3.0f
T8b949e// Track polyline dash pattern (on/off lengths in px), shared by the border and fill paints.
Tff7b72private Tff7b72const Tff7b72val Te6edf3TRACK_DASH_ON_PX Tff7b72= T79c0ff8T79c0ff0f
Tff7b72private Tff7b72const Tff7b72val Te6edf3TRACK_DASH_OFF_PX Tff7b72= T79c0ff6T79c0ff0f
T8b949e/** Adds copyright to map depending on what source is showing */
Tff7b72fun Te6edf3MapViewTb4b4b4.Td2a8ffaddCopyrightTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3overlaysTb4b4b4.Te6edf3none Tb4b4b4{ Tffa657it Tff7b72is Te6edf3CopyrightOverlay Tb4b4b4}Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3copyrightNoticeTb4b4b4: Tffa657String Tff7b72= Te6edf3tileProviderTb4b4b4.Te6edf3tileSourceTb4b4b4.Te6edf3copyrightNotice Tff7b72?: Tff7b72return
Tff7b72val Te6edf3copyrightOverlay Tff7b72= Te6edf3CopyrightOverlayTb4b4b4(Te6edf3contextTb4b4b4)
Te6edf3copyrightOverlayTb4b4b4.Te6edf3setCopyrightNoticeTb4b4b4(Te6edf3copyrightNoticeTb4b4b4)
Te6edf3overlaysTb4b4b4.Te6edf3addTb4b4b4(Te6edf3copyrightOverlayTb4b4b4)
Tb4b4b4}
Tb4b4b4}
T8b949e/**
* Create LatLong Grid line overlay
*
* @param enabled: turn on/off gridlines
*/
Tff7b72fun Te6edf3MapViewTb4b4b4.Td2a8ffcreateLatLongGridTb4b4b4(Te6edf3enabledTb4b4b4: Tffa657BooleanTb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3latLongGridOverlay Tff7b72= Te6edf3LatLonGridlineOverlay2Tb4b4b4(Tb4b4b4)
Te6edf3latLongGridOverlayTb4b4b4.Te6edf3isEnabled Tff7b72= Te6edf3enabled
Tff7b72if Tb4b4b4(Te6edf3latLongGridOverlayTb4b4b4.Te6edf3isEnabledTb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3textPaint Tff7b72=
Te6edf3PaintTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3apply Tb4b4b4{
Te6edf3textSize Tff7b72= Te6edf3GRID_LABEL_TEXT_SIZE_PX
Te6edf3color Tff7b72= Te6edf3ColorTb4b4b4.Te6edf3GRAY
Te6edf3isAntiAlias Tff7b72= Tff7b72true
Te6edf3isFakeBoldText Tff7b72= Tff7b72true
Te6edf3textAlign Tff7b72= Te6edf3PaintTb4b4b4.Te6edf3AlignTb4b4b4.Te6edf3CENTER
Tb4b4b4}
Te6edf3latLongGridOverlayTb4b4b4.Te6edf3textPaint Tff7b72= Te6edf3textPaint
Te6edf3latLongGridOverlayTb4b4b4.Te6edf3setBackgroundColorTb4b4b4(Te6edf3ColorTb4b4b4.Te6edf3TRANSPARENTTb4b4b4)
Te6edf3latLongGridOverlayTb4b4b4.Te6edf3setLineWidthTb4b4b4(Te6edf3GRID_LINE_WIDTH_PXTb4b4b4)
Te6edf3latLongGridOverlayTb4b4b4.Te6edf3setLineColorTb4b4b4(Te6edf3ColorTb4b4b4.Te6edf3GRAYTb4b4b4)
Te6edf3overlaysTb4b4b4.Te6edf3addTb4b4b4(Te6edf3latLongGridOverlayTb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tff7b72fun Te6edf3MapViewTb4b4b4.Td2a8ffaddScaleBarOverlayTb4b4b4(Te6edf3densityTb4b4b4: Te6edf3DensityTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3overlaysTb4b4b4.Te6edf3none Tb4b4b4{ Tffa657it Tff7b72is Te6edf3ScaleBarOverlay Tb4b4b4}Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3scaleBarOverlay Tff7b72=
Te6edf3ScaleBarOverlayTb4b4b4(Tff7b72thisTb4b4b4)Tb4b4b4.Te6edf3apply Tb4b4b4{
Te6edf3setAlignBottomTb4b4b4(Tff7b72trueTb4b4b4)
Te6edf3withTb4b4b4(Te6edf3densityTb4b4b4) Tb4b4b4{
Te6edf3setScaleBarOffsetTb4b4b4(T79c0ff1T79c0ff5.Te6edf3dpTb4b4b4.Te6edf3toPxTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3toIntTb4b4b4(Tb4b4b4)Tb4b4b4, T79c0ff4T79c0ff0.Te6edf3dpTb4b4b4.Te6edf3toPxTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3toIntTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3setTextSizeTb4b4b4(T79c0ff1T79c0ff2.Te6edf3spTb4b4b4.Te6edf3toPxTb4b4b4(Tb4b4b4)Tb4b4b4)
Tb4b4b4}
Te6edf3textPaintTb4b4b4.Te6edf3apply Tb4b4b4{
Te6edf3isAntiAlias Tff7b72= Tff7b72true
Te6edf3typeface Tff7b72= Te6edf3TypefaceTb4b4b4.Te6edf3DEFAULT_BOLD
Tb4b4b4}
Tb4b4b4}
Te6edf3overlaysTb4b4b4.Te6edf3addTb4b4b4(Te6edf3scaleBarOverlayTb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tff7b72fun Te6edf3MapViewTb4b4b4.Td2a8ffaddPolylineTb4b4b4(Te6edf3densityTb4b4b4: Te6edf3DensityTb4b4b4, Te6edf3geoPointsTb4b4b4: Te6edf3ListTff7b72<Te6edf3GeoPointTff7b72>Tb4b4b4, Te6edf3onClickTb4b4b4: Tb4b4b4(Tb4b4b4) Tff7b72-Tff7b72> Tffa657UnitTb4b4b4)Tb4b4b4: Te6edf3Polyline Tb4b4b4{
Tff7b72val Te6edf3polyline Tff7b72=
Te6edf3PolylineTb4b4b4(Tff7b72thisTb4b4b4)Tb4b4b4.Te6edf3apply Tb4b4b4{
Tff7b72val Te6edf3borderPaint Tff7b72=
Te6edf3PaintTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3apply Tb4b4b4{
Te6edf3color Tff7b72= Te6edf3ColorTb4b4b4.Te6edf3BLACK
Te6edf3isAntiAlias Tff7b72= Tff7b72true
Te6edf3strokeWidth Tff7b72= Te6edf3withTb4b4b4(Te6edf3densityTb4b4b4) Tb4b4b4{ T79c0ff1T79c0ff0.Te6edf3dpTb4b4b4.Te6edf3toPxTb4b4b4(Tb4b4b4) Tb4b4b4}
Te6edf3style Tff7b72= Te6edf3PaintTb4b4b4.Te6edf3StyleTb4b4b4.Te6edf3STROKE
Te6edf3strokeJoin Tff7b72= Te6edf3PaintTb4b4b4.Te6edf3JoinTb4b4b4.Te6edf3ROUND
Te6edf3strokeCap Tff7b72= Te6edf3PaintTb4b4b4.Te6edf3CapTb4b4b4.Te6edf3ROUND
Te6edf3pathEffect Tff7b72= Te6edf3DashPathEffectTb4b4b4(Te6edf3floatArrayOfTb4b4b4(Te6edf3TRACK_DASH_ON_PXTb4b4b4, Te6edf3TRACK_DASH_OFF_PXTb4b4b4)Tb4b4b4, T79c0ff0fTb4b4b4)
Tb4b4b4}
Te6edf3outlinePaintListsTb4b4b4.Te6edf3addTb4b4b4(Te6edf3MonochromaticPaintListTb4b4b4(Te6edf3borderPaintTb4b4b4)Tb4b4b4)
Tff7b72val Te6edf3fillPaint Tff7b72=
Te6edf3PaintTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3apply Tb4b4b4{
Te6edf3color Tff7b72= Te6edf3ColorTb4b4b4.Te6edf3WHITE
Te6edf3isAntiAlias Tff7b72= Tff7b72true
Te6edf3strokeWidth Tff7b72= Te6edf3withTb4b4b4(Te6edf3densityTb4b4b4) Tb4b4b4{ T79c0ff6.Te6edf3dpTb4b4b4.Te6edf3toPxTb4b4b4(Tb4b4b4) Tb4b4b4}
Te6edf3style Tff7b72= Te6edf3PaintTb4b4b4.Te6edf3StyleTb4b4b4.Te6edf3FILL_AND_STROKE
Te6edf3strokeJoin Tff7b72= Te6edf3PaintTb4b4b4.Te6edf3JoinTb4b4b4.Te6edf3ROUND
Te6edf3strokeCap Tff7b72= Te6edf3PaintTb4b4b4.Te6edf3CapTb4b4b4.Te6edf3ROUND
Te6edf3pathEffect Tff7b72= Te6edf3DashPathEffectTb4b4b4(Te6edf3floatArrayOfTb4b4b4(Te6edf3TRACK_DASH_ON_PXTb4b4b4, Te6edf3TRACK_DASH_OFF_PXTb4b4b4)Tb4b4b4, T79c0ff0fTb4b4b4)
Tb4b4b4}
Te6edf3outlinePaintListsTb4b4b4.Te6edf3addTb4b4b4(Te6edf3MonochromaticPaintListTb4b4b4(Te6edf3fillPaintTb4b4b4)Tb4b4b4)
Te6edf3setPointsTb4b4b4(Te6edf3geoPointsTb4b4b4)
Te6edf3setOnClickListener Tb4b4b4{ Te6edf3_Tb4b4b4, Te6edf3_Tb4b4b4, Te6edf3_ Tff7b72-Tff7b72>
Te6edf3onClickTb4b4b4(Tb4b4b4)
Tff7b72true
Tb4b4b4}
Tb4b4b4}
Te6edf3overlaysTb4b4b4.Te6edf3addTb4b4b4(Te6edf3polylineTb4b4b4)
Tff7b72return Te6edf3polyline
Tb4b4b4}
Tff7b72fun Te6edf3MapViewTb4b4b4.Td2a8ffaddPositionMarkersTb4b4b4(Te6edf3positionsTb4b4b4: Te6edf3ListTff7b72<Te6edf3PositionTff7b72>Tb4b4b4, Te6edf3onClickTb4b4b4: Tb4b4b4(Tffa657IntTb4b4b4) Tff7b72-Tff7b72> Tffa657UnitTb4b4b4)Tb4b4b4: Te6edf3ListTff7b72<Te6edf3MarkerTff7b72> Tb4b4b4{
Tff7b72val Te6edf3navIcon Tff7b72= Te6edf3ContextCompatTb4b4b4.Te6edf3getDrawableTb4b4b4(Te6edf3contextTb4b4b4, Te6edf3RTb4b4b4.Te6edf3drawableTb4b4b4.Te6edf3ic_map_navigationTb4b4b4)
Tff7b72val Te6edf3markers Tff7b72=
Te6edf3positionsTb4b4b4.Te6edf3map Tb4b4b4{ Te6edf3pos Tff7b72-Tff7b72>
Te6edf3MarkerTb4b4b4(Tff7b72thisTb4b4b4)Tb4b4b4.Te6edf3apply Tb4b4b4{
Te6edf3icon Tff7b72= Te6edf3navIcon
Te6edf3rotation Tff7b72= Tb4b4b4(Tb4b4b4(Te6edf3posTb4b4b4.Te6edf3ground_track Tff7b72?: T79c0ff0Tb4b4b4) Tff7b72* Te6edf3HEADING_DEGTb4b4b4)Tb4b4b4.Te6edf3toFloatTb4b4b4(Tb4b4b4)
Te6edf3setAnchorTb4b4b4(Te6edf3MarkerTb4b4b4.Te6edf3ANCHOR_CENTERTb4b4b4, Te6edf3MarkerTb4b4b4.Te6edf3ANCHOR_CENTERTb4b4b4)
Te6edf3position Tff7b72= Te6edf3GeoPointTb4b4b4(Tb4b4b4(Te6edf3posTb4b4b4.Te6edf3latitude_i Tff7b72?: T79c0ff0Tb4b4b4) Tff7b72* Te6edf3DEG_DTb4b4b4, Tb4b4b4(Te6edf3posTb4b4b4.Te6edf3longitude_i Tff7b72?: T79c0ff0Tb4b4b4) Tff7b72* Te6edf3DEG_DTb4b4b4)
Te6edf3setOnMarkerClickListener Tb4b4b4{ Te6edf3_Tb4b4b4, Te6edf3_ Tff7b72-Tff7b72>
Te6edf3onClickTb4b4b4(Te6edf3posTb4b4b4.Te6edf3timeTb4b4b4)
Tff7b72true
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Te6edf3overlaysTb4b4b4.Te6edf3addAllTb4b4b4(Te6edf3markersTb4b4b4)
Tff7b72return Te6edf3markers
Tb4b4b4}
Served by rngit 1.5.0 - Generated in 0.06s